function flattenDeep(input) {
  const stack = [...input];
  const res = [];
  while (stack.length) {
      // 使用 pop 从 stack 中取出并移除值
      const next = stack.pop();
      if (Array.isArray(next)) {
          // 使用 push 送回内层数组中的元素，不会改动原始输入 original input
          console.log(...next)
          stack.push(...next);
      } else {
          res.push(next);
      }
  }
  // 使用 reverse 恢复原数组的顺序
  return res.reverse();
}
console.log(flattenDeep([1, [2, [3, [4]], 5]]));